package com.swanclouds.redfish.updates.domin;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.swanclouds.model.updates.Update;
import com.swanclouds.redfish.common.redfish.Status;

import java.util.Map;

/**
 * Author: HuangFuYuHui
 * Title: UpdateModel
 * Description: 升级服务资源的信息。
 * Date: 2022/7/27 10:45
 */
public class UpdateModel implements Update {

    /**
     * 指定升级服务资源的访问路径
     */
    @JsonProperty("@odata.id")
    private String dataId;

    /**
     * 指定升级服务资源模型的OData描述信息
     */
    @JsonProperty("@odata.context")
    private String context;

    /**
     * 指定升级服务资源的类型
     */
    @JsonProperty("@odata.type")
    private String type;

    /**
     * 指定升级服务资源的ID
     */
    @JsonProperty("Id")
    private String id;

    /**
     * 指定升级服务资源的名称
     */
    @JsonProperty("Name")
    private String name;

    /**
     * 升级服务使能状态。
     */
    @JsonProperty("ServiceEnabled")
    private String serviceEnabled;

    /**
     * 指定升级服务资源的状态
     */
    @JsonProperty("Status")
    private Status status;

    /**
     *  可执行的操作
     */
    @JsonProperty("Actions")
    private Map<String,Object> action;


    /**
     * 指定升级服务资源的访问路径
     * @return dataId
     */
    @Override
    public String getDataId() {
        return this.dataId;
    }

    /**
     * 指定升级服务资源的OData描述信息
     * @return context
     */
    @Override
    public String getContext() {
        return this.context;
    }

    /**
     * 指定升级服务资源的类型
     * @return type
     */
    @Override
    public String getType() {
        return this.type;
    }

    /**
     * 系统资源的ID
     * @return Id
     */
    @Override
    public String getId() {
        return this.id;
    }

    /**
     * 指定升级服务资源的名称
     * @return Name
     */
    @Override
    public String getName() {
        return this.name;
    }

    /**
     * 升级服务使能状态。
     * @return serviceEnabled
     */
    public String getServiceEnabled() {
        return serviceEnabled;
    }

    /**
     * 指定升级服务资源的状态
     * @return status
     */
    public Status getStatus() {
        return status;
    }

    /**
     *  可执行的操作
     * @return action
     */
    public Map<String, Object> getAction() {
        return action;
    }

    @Override
    public String toString() {
        ObjectMapper objectMapper = new ObjectMapper();
        try {
            return objectMapper.writeValueAsString(this);
        } catch (JsonProcessingException e) {
        }
        return "UpdateModel {" +
                "dataId='" + dataId + '\'' +
                ", context='" + context + '\'' +
                ", type='" + type + '\'' +
                ", id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", status='" + status + '\'' +
                ", serviceEnabled='" + serviceEnabled + '\'' +
                ", action=" + action +
                '}';
    }

}
